#include <stdio.h>
#include <unistd.h>
#include <string.h>
int main()
{
 //C接口

  printf("C Printf\n");
  const char* msg = "hello wrold\n";
  fputs("hello puts\n",stdout);
  fprintf(stdout,msg);


  //系统接口
  const char* msg2 = "hello os write\n";
  write(1,msg2,strlen(msg2));
 

  //代码进程结束前，直接fork()
  //如果没有重定向文件之中，看到了4条消息
  //stdout 默认用的是行刷新，在fork之前，三条C函数的语句已经把输出打印到显示器上进行显示，你的FILE内部已经不存在对应的数据
  //2、如果进行了>重定向到文件的操作，写入文件不再是显示器，而是普通文件，采用的策略是全缓冲（也就是缓冲区满了或者进程结束了之后，在进行刷新），虽然带了/n但是不足以stdout缓冲区写满！数据并没有被刷新
  //执行fork的时候，stdout属于父进程，创建子进程的时候，会对父进程的相关数据进行写时拷贝，在子进程退出的时候，就会进行缓冲区的刷新
  //write为什么没有呢？因为write是操作系统提供的接口，没有FILE的数据结构，直接使用的是fd，所以没有c提供的缓冲区


  fork();

  return 0;
}
